<!--
  - Copyright (c) 2023.
  -
  - 作者：bmy
  - 邮箱：2271608011@qq.com
  - gitee：https://gitee.com/bmycode
  - github：https://github.com/helpcode
  -
  -->

<script lang="ts">
  import { onMount } from "svelte";
  import Layout from "@/component/layout.svelte";
  import { Stack, Badge } from '@svelteuidev/core';
  // 这个插件内部用的是 window.__TAURI_INVOKE__ 和 RUST 通讯，
  // 而 __TAURI_INVOKE__ 不存在，在 tauri 1.x 中 是 window.__TAURI__.invoke
  // 在 tauri 2.x 中 是 @tauri-apps/api/primitives 包中 的 invoke 方法
  // 这个 __TAURI_INVOKE__ 本身就错误！！ 所以 @tauri-apps/plugin-app 包无法使用
  // 修改 @tauri-apps/plugin-app 包中 通讯代码 虽然可以运行，但也毫无意义，重新下载
  // 依赖后还是要继续修改代码否则还是报错，所以放弃 存在问题 tauri 2.x ，使用 1.x 的
  // 全局变量！！！
  // import { getVersion, getName } from "@tauri-apps/plugin-app";
  let { getVersion, getName, getTauriVersion } = window.__TAURI__.app
  import gitee from "@/serve/gitee";
  import { message } from "@tauri-apps/plugin-dialog";
  import { open } from '@tauri-apps/plugin-shell';
  import Notification from "@/utils/Notification";

  let appName: string;
  let appVersion: string;
  let TauriVersion: string;

  onMount(async () => {
    appName = await getName();
    appVersion = await getVersion();
    TauriVersion = await getTauriVersion();
  })

  const checkUpdate = async () => {
    let res = await gitee.ReleasesLatest();
    // 如果新版本 大于 当前版本，提示升级
    if (gitee.compare(res.tag_name, appVersion)) {
      await message(res.body, {
        title: `检测到新版本: v${res.tag_name}`, type: 'info',
        okLabel: '升级',
      });
      await open(res.assets[0].browser_download_url);
    } else {
      await Notification.send({
        title: '提示',
        body: `当前 v${appVersion} 已是最新版本啦！`
      })
    }
  }
</script>


<div class="about">
    <Layout text="关于软件">
        <img src="/img/JsonToClass.png" alt="">

        <Stack override={{ height: 200 }} align="strech" justify="flex-start" spacing="lg">
            <div class="desc">
                <p><span>名称：</span>{appName}</p>
                <p>
                    <span>版本：</span>v{appVersion}
                    <Badge class="update" on:click={checkUpdate} radius="lg" variant="outline">
                        检查更新
                    </Badge>
                </p>
                <p><span>Tauri：</span>v{TauriVersion} beta </p>
                <p><span>源码：</span>https://gitee.com/bmycode/json-class-desktop</p>
            </div>
            <div class="desc">
                <p><span>作者：</span>Bmy</p>
                <p><span>邮箱：</span>2271608011@qq.com</p>
                <p><span>Github：</span>https://github.com/helpcode</p>
                <p><span>Gitee：</span>https://gitee.com/bmycode</p>
            </div>
        </Stack>


    </Layout>
</div>

<style lang="less">
  @import "../assets/less/_.less";

  .about {
    :global(.update){
      cursor: pointer;
    }
    img {
      width: 250px;
      height: 250px;
    }

    .desc {
      margin-left: 30px;

      p {
        margin-bottom: 10px;
        font-size: 16px;
        color: @color;
        span {
          //font-weight: 500;
        }
      }
    }
  }
</style>